#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int N=100050;
int a[N];
int pre[N];
int suf[N];
int gcd(int a,int b){
    return b==0 ? a : gcd(b,a%b);
}
int main(void){
    int t;
    int n;
    scanf("%d",&t);
    while(t--){
        memset(a,0,sizeof(a));
        memset(pre,0,sizeof(pre));
        memset(suf,0,sizeof(suf));
        scanf("%d",&n);
        for(int i=0;i<n;i++){
            scanf("%d",&a[i]);
        }
        //预处理前缀和后缀gcd
        pre[0]=a[0];
        for(int i=1;i<n;i++){
            pre[i]=gcd(pre[i-1],a[i]);
        }
        suf[n-1]=a[n-1];
        for(int i=n-2;i>=0;i--){
            suf[i]=gcd(suf[i+1],a[i]);
        }
        //枚举删除的数字
        int ans=1;
        for(int i=0;i<n;i++){
            ans=max(ans,gcd(pre[i-1],suf[i+1]));
        }
        printf("%d\n",ans);
    }
    return 0;
}